"""
给定一个二叉树，它的每个结点都存放一个 0-9 的数字，每条从根到叶子节点的路径都代表一个数字。

例如，从根到叶子节点路径 1->2->3 代表数字 123。

计算从根到叶子节点生成的所有数字之和。

说明: 叶子节点是指没有子节点的节点。

感觉和113题很像，只不过是求数字之和
"""

from leetcode_test import TreeNode

class Solution:
    def sumNumbers(self, root: TreeNode) -> int:
        ans = 0
        def helper(root: TreeNode, res: str):
            nonlocal ans
            if not root:
                return
            if not root.left and not root.right:
                ans += int(res + str(root.val))
            helper(root.left, res+str(root.val))
            helper(root.right, res+str(root.val))
        helper(root, "")
        return ans

def test():
    t = TreeNode.create([1, 2, 3])
    Solution().sumNumbers(t) == 25